Learning

Blog, Dev Life
Featured Video Play Icon

Learning. Gaining Knowledge. Advancing your skills. Leveling up. Getting smarterer? Chances are, you’ve learned something. If you are watching this, you have probably learned how to open youtube. Congrats! You probably already know how to learn about things, but have you ever thought about how to really learn?

They say you never stop learning (btw, who are they?). So, today, you’re going to learn…to learn! So…let’s learn!

How do you learn?

Think about some of the things you’ve learned. How did you learn these things? If you’re a software developer, how did you learn to become one? How did you learn what a software developer is? How will you learn in the future?

You have the capacity to understand learning and you can adapt yourself to any given environment. Throughout your career, you will find yourself in a lot of different environments. Each environment is unique. There are similarities that can be found, but that is something I’ll touch on in a bit. Environments can have different languages, frameworks, standards, paradigms, operating systems. To be successful, you must be adaptable. If you can’t or won’t adapt, you can and will get stale. Sometimes, getting stale is okay. Some people thrive in doing one thing and doing it well. These people find what works for them and they stick with it. There is nothing wrong with that at all. It is just my own belief that being adaptable will also make you more marketable. To be adaptable, you must learn to learn.

Learning to learn

In college, I was fortunate to take a course on computer languages. The goal of the course was to learn what multiple languages and how they were made. We had to learn a new language every 2 weeks. We learned smalltalk, erlang, pascal, perl, python, lisp, etc. While the goal was to learn languages, the real goal was to learn the similarities and the differences. I found that learning the similarities and the differences helped me quickly adapt to a new language.

When I was learning to be a pilot, everything felt so different than anything I had encountered before. The only thing I could make a connection to was driving a car. Taking the fundamentals of driving a car, I was able to make connections to flying. Planes turn, cool. You can speed up and slow down, great. You have to deal with traffic, got it. Dials tell you things, sweet! With those similarities in mind, I was able to build a base and build the differences upon it.

Think about variables in programming. What is it? Well, it’s a thing that holds data. That data is stored in memory. It can be manipulated, and it can be used. Variables are a part of most languages. Now think about different types of variables. Integers store numbers, string store characters. They both store something, but they store different types of things. Both can be used and changed. So now, a new type comes along. Let’s call this new type an exponent. Given this type, you assign it a number, that number becomes the base of the exponent and from there, the only numbers that can be used are exponents of that initial number. So it’s kind of like an integer that, based on the initial number its assigned, can only be assigned numbers that are exponential. Similar to an integer, but different because of its limits. Learning!

So learning to learn is finding the similarities and building the differences on top of that base. Make connections to things you know. You’ve probably already been doing this. Have you ever had a moment where you’ve said, oh, its like this but it has that. Similarities!

The differences

Differences are truly the key to learning. If you only “learned” things that are the same, you’re not learning. The differences are what separates this from that. You find the similarities, but you learn the differences, that is what makes it a new concept or a new thing.

Let’s think about learning nodejs and let’s say you already have a good handle on javascript. Nodejs is just a runtime environment for javascript that exists outside of a browser. Just saying that because you know javascript, you know nodejs is a fallacy. Javascript is the similarity, but what nodejs does and how it solves things differently is the difference. Javascript is just a language, nodejs is a runtime environment. Take what you know and focus on the differences. Focus on how nodejs is used and what it can solve.

What about domain knowledge? Domain knowledge is the knowledge that describes a thing. Let’s talk about an education system vs a retail system. Both are their own domains. Education domain knowledge consists of students and teachers, among others. Retail consists of salespeople and customers. Both share a form of administrators.

What’s similar? Both produce a good. Let’s align these. Students are like customers, both receive the product. Teachers are like salespeople, both produce the goods. Both require administrators to deal with management of the resources and the people.

What’s different? Students are there to learn. Their resource is education. Customers are there to make a purchase. Their resource is either an item or a service.

Wrap up

Learning is important in software development. The field is always changing and having the ability to adapt to those changes can set you apart from your peers. Understanding how you learn is key to being able to adapt. Unless you are the type of person that is okay with learning one thing and sticking with that, you need to learn new things. Learning can actually be fun. Learning new shiny languages or concepts can help you build some really awesome things. New robot comes along? And it has a programmable interface! Woo! Let’s make it bake me a cake!

Learning how to learn will set you apart. Find the similarities, learn the differences. That is learning. Never stop learning. Knowledge is power!